home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2000 #4
/
Amiga Plus CD - 2000 - No. 4.iso
/
PowerPC
/
Games
/
Battalion
/
source
/
battalion.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-12-23
|
27KB
|
1,049 lines
/****************************************************************/
/* code copyright 1995-1996 Andrew Johnson - ALL RIGHTS RESERVED*/
/* ajohnson@eecs.uic.edu */
/* */
/* Electronic Visualization Lab (M/C 154) */
/* University of Illinois at Chicago */
/* 851 South Morgan St. Room 1120 SEO */
/* Chicago, IL 60607-7053 */
/* */
/* (312) 996-3002 (312) 413-7585 FAX */
/***********************************************************************/
/* header file v 1.4b2 */
/***********************************************************************/
#define RECONNECT_TIME 15
#define IM_NOT_DEAD_YET_TIME 60
#define IM_NOT_DEAD_SEND_TIME 19
#define MAXLINE 256
#define COMPUTER_MONSTER -1
#define MONSTER_UPDATE_RATE 5
#define DEFAULT_PORT 6000
#define MAXCLIENTS 10
#define MESG_BUILDING "bld"
#define MESG_UPDATE "upd"
#define MESG_REQUEST "req"
#define MESG_NOTDEADYET "Iliv"
#define MESG_REAQUIRE "yo"
#define MESG_ACKNOWLEDGE "ack"
#define MESG_NEW_TANK "newTank"
#define MESG_UPDATE_TANK "updateTank"
#define MESG_CLIENT_CLIENT_UPDATE "client"
/* stuff to try and get the Mac version to compile and run */
/* #define MACVERSION */
/* #define DEBUG */
#ifdef MACVERSION
#define MESA_TK_VERSION
#define MESAVERSION
#endif
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <math.h>
#include <time.h>
#ifdef MACVERSION
#include <GL/tk.h>
/*this next one was added to my tk.h */
#define TK_CONTROL_L 0x03
#include <utime.h>
#include <sound.h>
#include "SoundHelper.h"
#endif
#ifndef MACVERSION
#ifndef AMIGAVERSION
#include <malloc.h>
#include <pwd.h>
#endif
#endif
#include <stdio.h>
#ifndef AMIGAVERSION
#include <unistd.h>
#endif
#ifndef MACVERSION
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/param.h>
#include <netinet/in.h>
#include <netdb.h>
#ifndef AMIGAVERSION
#include <netinet/tcp.h>
#include <sys/uio.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include <sys/errno.h>
#include <signal.h>
#else
#include <sys/ioctl.h>
#include <errno.h>
#endif
#endif
#ifdef SGIVERSION
#include <bstring.h>
#endif
#ifdef SOLARIS
/* from Johan Hagman <Johan.Hagman@mailbox.swipnet.se> */
# include <sys/stat.h>
# include <sys/file.h>
/* BSD compatibility */
# define bzero(dst,len) memset(dst, 0, len)
#endif
#ifdef SUNAUDIO
/* Audio support */
# include <multimedia/libaudio.h>
# include <multimedia/audio_device.h>
#endif
#ifdef HPVERSION
/* to get non-blocking I/O under HP-UX */
/* from Neil Harkin <T.N.Harkin@csc.liv.ac.uk> */
#define FNDELAY O_NDELAY
#endif
#ifdef AMIGAVERSION
#include <exec/types.h>
#include <exec/libraries.h>
#include <devices/timer.h>
#include <amitcp/socketbasetags.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/socket.h>
#ifdef __PPC__
#include <clib/powerpc_protos.h>
#endif
#define bzero(dst,len) memset(dst,0,len)
#define MESA_TK_VERSION
#define MESAVERSION
#endif
#include <GL/gl.h>
#include <GL/glu.h>
#ifndef MACVERSION
#ifndef AMIGAVERSION
#include <GL/glx.h>
#include "tk.h"
#else
#include "tk_amiga.h"
#endif
#endif
#ifndef MACVERSION
#ifndef AMIGAVERSION
#include <sys/time.h>
#endif
#endif
/* audio routines */
/*****************/
#ifdef SGIVERSION
#include <audio.h>
#include <audiofile.h>
#endif
/* added for the OpenGL version */
#ifndef TRUE
# define TRUE 1
#endif
#ifndef FALSE
# define FALSE 0
#endif
#define ENGLISH 0
#define JAPANESE 1
#define MAXTARGETS 3
/************************************/
/* to try and speed up computations */
/************************************/
#ifdef SGIVERSION
#define fabs fabsf
#define sqrt fsqrt
#define sin fsin
#define cos fcos
#define atan fatan
#define atan2 atan2f
#else
#define amalloc(x,y) malloc(x)
#define afree(x,y) free(x)
#define acalloc(n,x,y) calloc(n,x)
#endif
#ifdef MACVERSION
#define sqrt sqrtf
#define sin sinf
#define cos cosf
#define atan atanf
#define atan2 atan2f
#endif
/******************/
/* set up the fog */
/******************/
#ifdef SGIVERSION
#define MONSTERFOGSTART 2
#define MONSTERFOGEND 6.5
#define ARMYFOGSTART 4
#define ARMYFOGEND 15
#define OVERVIEWFOGSTART 4
#define OVERVIEWFOGEND 12
#else
#define MONSTERFOGSTART 2.5
#define MONSTERFOGEND 6
#define ARMYFOGSTART 4
#define ARMYFOGEND 12
#define OVERVIEWFOGSTART 6
#define OVERVIEWFOGEND 12
#endif
/**********************/
/* monster ID numbers */
/**********************/
#define GOOGELON 0
#define VAPOUR 1
#define TECHS 2
#define FLUTTER 3
/**********************/
/* misc stuff */
/**********************/
#ifndef PI
#define PI 3.14159265
#endif
#define TWOPI 6.2831853
#ifdef MESAVERSION
#define CYLINDERSIDES 6
#define MORECYLINDERSIDES 12
#else
#define CYLINDERSIDES 12
#define MORECYLINDERSIDES 20
#endif
#define CYLINDER_EPSILON 0.0001
#define NEARZERO 0.0001
#define BIGNUM 99999
#define ARMCOUNT 8
#define NULLROAD 10
#define MAXSTRING 256
/**********************/
/* game stuff */
/**********************/
#ifdef MESAVERSION
#define MAXTRIBUTES 25
#else
#define MAXTRIBUTES 45
#endif
#define ARRIVALRATE 62
#define STARTACCURACY 200
#define STARTFIRINGDELAY 43
#define GRAVITY 0.01
#define BEAMKILL 0.31
#define BLASTR 0.5
#define TREEBLASTR 0.25
#define TREEBLASTHEIGHTR 1
#define BLASTRX2 1
#define BLASTRX04 0.2
#define BLASTRX05 0.25
#define BLASTRX06 0.3
#define BLASTRX07 0.35
#define BLASTRX075 0.375
#define TANKV 0.03
#define MAXLIFE 100
#define BLASTPOINTS 2
/**********************/
/* stereo stuff */
/**********************/
#define YMAXSTEREO 491
#define YOFFSET 532
/**********************/
/* battlefield stuff */
/**********************/
#ifdef MESAVERSION
#define PLANESIZE 6
#else
#define PLANESIZE 8
#endif
/* height of the battlefield */
#define PLANEY -1
/* PLANEY + 0.003 */
#define SHADOWS -0.997
/* PLANEY + 0.001 */
#define ROADS -0.999
#define MAXROADSONPLANE 1000
#define ROADLINETHICKNESS 0.04
#define ROADLINELENGTH 0.13
/**********************/
/* views */
/**********************/
#define OMNISCIENTVIEW 0
#define MONSTERVIEW 1
#define ARMYVIEW 2
#define MAPVIEW 4
#define NOTANKONPLANE -9999
/**********************/
/* modes */
/**********************/
#define DEMOMODE 0
#define PLAYMODE 1
/**********************/
/* sounds */
/**********************/
#define TANKFIRE 0
#define HELOROCKET 1
#define TANKMASER 2
#define EXPLOSION 3
#define MONSTERBEAM 4
#define SLAG 5
#define CRASH 6
#define TECHSHOOT 7
#define MUSIC 8
/* #define MAXMUSIC 36 */
#define MAXMUSIC 5
#define MAXDEADMUSIC 5
#define MAXSOUNDS 25
/**********************/
/*limits */
/**********************/
#define MAXTREESONPLANE 800
#define MAXFIRESONPLANE 150
#define MAXTANKSONPLANE 200
#define ARENASIZE 100000
#ifdef AIXVERSION
#ifdef MAXPATH
#undef MAXPATH
#endif
#define MAXPATH 400
#endif
#define MAXPATH 400
#define MAXBEAMS 50
/**********************/
/* conversions */
/**********************/
#define BIG_DEG_TO_RAD 0.0017453292
/* (2 x pi) / 3600 */
#define RAD_TO_BIG_DEG 572.9577951
/* 360 / (2 x pi) */
#define RAD_TO_SMALL_DEG 57.29577951
/* 3600 / (2 x pi) */
#define DEG_TO_RAD 0.0174532925
/* Pi / 180 */
/**********************/
/* vehicles */
/**********************/
#define TANK 0
#define MASERTANK 1
#define HELO 2
#define MECHAG 3
#define CHH 4
#define HERO 5
#define AIRPLANE 6
#define LAUNCHER 7
#define FIGHTER 8
#define PARTIALM 100
#define PARTIALH 101
#define PARTIALC 102
#define BUILDING 99
#define MONSTER 75
/**********************/
/* projectiles */
/**********************/
#define PROJTANK 0
#define PROJROCKET 1
#define PROJTECHS 2
#define PROJFIRE 3
#define PROJHERO 4
#define PROJSCAR 5
#define PROJWATER 6
#define computeAngle(x, y, z, w) (atan2( (z - w) , (x - y)) + PI)
#define randy(x) (((rand() % 2001) - 1000) * x * 0.001)
struct projectile
{
struct projectile * next; /* pointer to next projectile */
struct monsterInfo * mine; /* pointer to ownder of projectile */
float x, y, z; /* location of projectile */
float xv, yv, zv; /* velocity of projectile */
char count; /* time after launch before arming */
char type; /* type of projectile */
};
struct boom
{
struct boom * next; /* pointer to next explosion */
struct monsterInfo * mine; /* pointer to ownder of boom */
float x, y, z; /* location of explosion */
int count; /* explosion timer */
};
struct tree
{
struct tree * next; /* pointer to next structure */
float x, y, z; /* location of structure */
float rad, theta;
float height;
int deathCount;
int death2;
int number;
char type;
char treeshape;
char intact; /* is structure intact? */
};
struct tank
{
struct tank * next;
struct monsterInfo* goforit;
float x, y, z; /* location of vehicle */
float xv, zv; /* velocity of vehicle */
float range; /* distance from vehicle to monster */
float minrange; /* minimum range vehicle can fire */
float finalR; /* final range vehicle is attempting */
float rad, theta;
float speed; /* speed of vehicle */
float rand1, rand2, rand3;
int count;
int maserCount;
int damage; /* amount of damage vehicle can take */
int walking;
int number;
char type; /* type of vehicle */
char subtype; /* sub type (for hero) */
};
struct road
{
float x, y; /* location of road */
char type; /* type: 0 vert, 1 horz, 2 cross */
};
struct monsterInfo
{
float a[MAXTRIBUTES][5]; /* vapour particles */
float energyRemaining; /* amount of energy remaining */
float rot1,rot2;
float speed; /* movement speed */
float xspeed; /* turning rate */
float moveCost; /* energy loss from moving */
float height; /* height of monster */
float width; /* width of monster */
float bottom; /* bottom of monster */
float regenRate; /* rate of energy gain */
int moveCount; /* for leg and wing rotation */
int monsterID; /* code # of monster */
int headHorzRotate; /* horizontal head angle */
int headVertRotate; /* vertical head angle */
int monsterScore; /* monster's score */
int deadCount; /* time monster is dying */
int timeDead; /* time monster has been dead */
int monster; /* type of monster */
int monsterIsDead; /* is monster alive or dead? */
int beamOn; /* is the energy weapon on */
int monsterGo; /* is the monster going forward? */
int monsterBack; /* is the monster going backward? */
int monsterMoving; /* is the monster moving? */
};
struct targetInfo
{
struct monsterInfo monster;
struct targetInfo * next;
float x,z;
float net_energyRemaining;
float net_x, net_z;
long net_clientFrom;
int net_headHorzRotate;
int net_headVertRotate;
int net_beamOn;
int lastUpdateFrame;
};
struct fireType
{
float x, z; /* location of flame */
float xwid, zwid; /* width of flame */
float height; /* height of flame */
float col; /* color of flame */
};
struct aSound
{
short *sampleBuffer;
long samplesPerFrame;
long numberSamples;
long samplesPerBuffer;
long audioRate;
};
struct sound
{
#ifdef SGIVERSION
ALport audio_port;
#endif
struct sound * next;
int type;
};
struct enemy
{
float r; /* range to enemy */
float y; /* height of enemy */
float ang; /* angle to enemy */
};
struct score
{
int number;
char name[256];
};
/***************************
* tk.c
*
***************************/
#if !defined(MACVERSION) && !defined(AMIGAVERSION)
void tkCloseWindow(void);
static GLenum DoNextEvent(void);
void tkExec(void);
void tkGetMouseLoc(int *x, int *y);
static XVisualInfo *FindVisual(GLenum type);
static int MakeVisualType(XVisualInfo *vi);
static int WaitForMapNotify(Display *d, XEvent *e, char *arg);
void tkInitPosition(int x, int y, int width, int height);
void tkInitDisplayMode(GLenum type);
GLenum tkInitWindow(char *title);
static int Ignore(Display *parm1, XErrorEvent *parm2);
void tkSetRGBMap(int size, float *rgb);
void tkSwapBuffers(void);
void unGrabPointer();
void grabPointer();
#else
void updateMonsterMenu(int);
void updateDetailMenu(int);
void enableViewMenu(void);
void disableViewMenu(void);
#endif
/***************************
* font.c
* holds the font routines
***************************/
extern GLenum tkCreateStrokeFont(GLuint);
extern void tkDrawStr(GLuint, char *);
/***************************
* update.c
* holds the update routines
***************************/
void showError(char *);
float buildingHeight(int, int);
struct monsterInfo resetMonsterParameters(struct monsterInfo);
int same(char *, char *);
int different(char *, char *);
float centerText(char *, float);
void updateGun(float, float, int, int, int,struct monsterInfo *);
void updateVap(float, float, int,struct monsterInfo *);
void updatetrees(struct tree *, int);
void updateBeam(struct monsterInfo *, struct targetInfo *, float, float, struct tank *, struct tree **, int, struct monsterInfo *);
void updateTanks(struct tank *, float, float, float, int, int, struct tank *,
float, int, int, struct monsterInfo *, struct targetInfo *);
void updateSlagTanks(struct tank *);
void updateBooms(struct boom *, struct tank *);
int tankHit(struct tank *, float, float, float);
void addNewTank(struct targetInfo *, float, float, int, struct tank *, struct tree *, int, int, struct monsterInfo *);
/****************************************************
* audio.c
* holds audio routines for battalion
****************************************************/
#ifdef MACVERSION
void setSoundVolume(long);
void processIdleAppSounds(void);
#endif
void macEachFrameSound(void);
void turnSoundOff();
void turnSoundOn();
void toggleSound();
int getSoundOn();
void turnMusicOff();
void turnMusicOn();
void toggleMusic();
int getMusicOn();
void checkSound(char *);
void initSounds(void);
void flushSounds(void);
void soundKiller(int);
void doSound(int);
void InitAudio(char *, char *, int);
void OutAudio(int);
/****************************************************
* battalion.c
* holds everything that hasnt been put somewhere else
****************************************************/
void newPlayerName(char *);
GLenum mouseKey(int, GLenum);
void doMonsterView(void);
void doOmniscientView(void);
void doArmyView(void);
void doMapView(void);
void goToHighDetail();
void goToLowDetail();
void updateScores(char *, int, int, int, char *);
void quickTanks(void);
int checkForBlock(struct tank *, float rad, float theta, float y);
void addScore(int, struct monsterInfo *);
void addBoom(float x, float y, float z,struct monsterInfo *);
void addProjectile( float x, float y, float z, int type,
float xv, float yv, float zv, float accuracy,struct monsterInfo *);
void updateProjectiles(void);
void updatetrees(struct tree *, int);
void updateTanks(struct tank *, float, float, float, int, int,
struct tank*, float, int, int,
struct monsterInfo *, struct targetInfo *);
void updateSlagTanks(struct tank *);
void addNewTank(struct targetInfo *, float, float, int, struct tank *,
struct tree *, int, int, struct monsterInfo *);
void updateBooms(struct boom *, struct tank *);
void buildHillPart(struct tree, int, float, float);
void setPlayConditions(void);
void addRandomTarget(void);
void initialization(void);
void goto3d(void);
void goto1d(void);
void checkMouse(void);
void checkInput (void);
GLenum MouseDown(int, int, GLenum);
GLenum MouseUp(int, int, GLenum);
void demoKeys(int);
void playKeys(int);
void playNoPauseKeys(int);
GLenum processKey(int, GLenum);
#ifndef AMIGAVERSION
GLenum processKeyRelease(int);
#else
GLenum processKeyRelease(int,GLenum);
#endif
void checkInput (void);
void updateDeadMonster(float, float, struct monsterInfo * );
void updateVapourLook(float a[MAXTRIBUTES][5], int);
void updateTargets(void);
void doUpdate (void);
void goToMonsterView(int);
void goToArmyView(int);
void goToMapView(void);
void goToOverView(int);
void drawAMonster(float, struct monsterInfo, float, int, int);
void doDrawing (int);
struct monsterInfo autopilot(float, float, struct monsterInfo);
void reshape( int, int);
void id(void);
void showCommands(char *);
/*******************************
* net.c
* holds the network primitives
*******************************/
void turnBeamOnSinceLast(void);
void setUnconnected(void);
void setPortNumber(int);
void setHostAddr(char *);
void addNewNetworkTank(char *, struct tank *, void *, int);
void updateNetworkTank(char *, struct tank *);
void tellAboutAllTanks(struct sockaddr_in *, int, struct tank *);
void updateClientMonster(char *, void *);
int setUpClient(void);
int setUpNetwork(void);
void updateNetworkBuildings(char *, struct tree *);
void updateNetworkMonsters(char *, long, void *);
int sendMessage(char *, struct sockaddr_in *, int);
void processClient(time_t, int, int, struct tree *, struct tank *,
void * arena, int sizeTank, struct monsterInfo, int, int *);
void tellAboutAllDeadBuildings(struct sockaddr_in *, int, int, int *);
void processNetwork(time_t, int, int, struct tree *, struct tank *,
void *, struct monsterInfo, int, int, int *, int *);
void addNetworkTarget(long, int, float, float, float, float, float,
int, void *);
/*******************************
* gprim.c
* holds the graphics primitives
*******************************/
void drawCylinder(float *, float *, float, int, int, int);
void drawClosedCylinder(float *, float *, int, int);
void drawCone(float *, float *, float, int, int);
void drawClosedCone(float *, float *, int);
void maker(float tail2[8][3], float, float, float,
float, float, float,
float *, float, float, float, float);
void makerVapour(float, float, float, float, float, float);
void makerP(float tail2[8][3], float *, float, float, float,
float, float, float);
void makerFire(float c[4], float, float, float, float, float, float);
void makeitd(int, float *, float, float, float,
float, float, float);
void makeitPyr(int, float *, float, float, float,
float, float, float);
void makercube(float x, float y, float z,
float u, float v, float w,
float c[4]);
void makerbluecube(float x, float y, float z,
float u, float v, float w,
float c[4]);
void makercubenobacknotop(float x, float y, float z,
float u, float v, float w,
float c[4]);
void makerlogo(float x, float y, float z,
float u, float v, float w, int, int, int);
void makercubeTopBack(float x, float y, float z,
float u, float v, float w,
float c[4]);
void makercubenobtm(float x, float y, float z,
float u, float v, float w,
float c[4]);
void makercubenobtmnotop(float x, float y, float z,
float u, float v, float w,
float c[4]);
void makercubenobtmnotopTEX(float x, float y, float z,
float u, float v, float w,
float c[4]);
void makerrotcubexy(float u, float v, float w,
float theta, float c[4]);
void makerrotcubexyflat(float u, float v, float w,
float theta, float c[4]);
/*****************************************
* objects.c
* holds the objects for the graphics routines
*****************************************/
GLuint makeMonsterLookat(void);
GLuint makeOverviewLookat(void);
GLuint makeshell2(void);
GLuint makeHeroShell(void);
GLuint makeWaterShell(void);
GLuint makeTankShadow(void);
GLuint makeFighterShadow(void);
GLuint makePlaneShadow(void);
GLuint makeTank(void);
GLuint makeSlagTank(void);
GLuint makeLauncherTank(void);
GLuint makeSlagLauncherTank(void);
GLuint makeMaserTank(void);
GLuint makeSlagMaserTank(void);
GLuint makeHelo(void);
GLuint makeSlagHelo(void);
GLuint makeBigRotor(void);
GLuint makeSmallRotor(void);
GLuint makePropeller(void);
GLuint makeAirplaneBody(void);
GLuint makeFighterBody(void);
GLuint makeLeg(void);
GLuint makeHead(void);
GLuint makeTail(void);
GLuint makeSimpleHead(void);
GLuint makeSimpleTail(void);
GLuint makeBody(void);
GLuint makeFlutterHead(void);
GLuint makeFlutterShadow(void);
GLuint makeFlutterXMas(void);
GLuint makeFlutterBody(void);
GLuint makeFlutterWing1(void);
GLuint makeFlutterWing2(void);
GLuint makeTechsBody(void);
GLuint makeTechsHead(void);
GLuint makeTechsSimpleBody(void);
GLuint makeTechsSimpleHead(void);
GLuint makeTechsShadow(void);
GLuint makePowerTower(void);
GLuint makeGenericWindows(void);
GLuint makebuilding1(int);
GLuint makebuilding2(int);
GLuint makebuilding5(int);
GLuint makebuilding7(void);
GLuint makebuilding9(int);
GLuint makebuilding10(void);
GLuint makebuilding12(int);
GLuint makebuilding14(void);
GLuint makebuilding19(int);
GLuint makebuilding20(int);
GLuint makebuilding21(int);
GLuint makebuilding31(void);
GLuint makebuilding32(void);
GLuint makeStrip1(int);
GLuint makeStrip2(int);
GLuint makeStrip3(int);
GLuint makeTitles(int);
GLuint makeLowDPlane(void);
GLuint makeHighDPlane(void);
GLuint makeBigPlane(void);
GLuint makePlaneDots(int);
GLuint makeRoundTreeShadow(void);
/*****************************************
* text.c
* holds the textual overlay routines
*****************************************/
void initFonts(void);
void showText(struct targetInfo *, float, int, long, int, int);
void showText2(long, int, int, int, int, int, int, int, int, int);
void showText3(int);
void showText4(void);
void doOptions(struct monsterInfo, long, int, int, float, int);
void doSummary(int, int, long, int,
int, int, int,
int, int, int, int, int, int, int,int);
void showScores(int, struct score*, struct score*, struct score*, struct score*, struct monsterInfo, int,float, int);
/*****************************************
* graphics.c
* holds the higher level graphics routines
*****************************************/
void doTexStuff(char *, char *, int, int, char *, GLuint *, int, int);
void makeObjects(char *);
void drawShadow (float, float, float, float);
void makeCHH(int);
void drawHelo(float, int);
void drawAirplane(int);
void drawFighter();
void drawMonster(struct monsterInfo, int, int, int);
void drawSimpleMonster(struct monsterInfo, int, int, int);
void drawVapour(struct monsterInfo, int, int);
void drawFlutter(struct monsterInfo, int, int, float, int, int);
void drawTechs(struct monsterInfo, int);
void drawSimpleTechs(struct monsterInfo, int);
void drawHeroDude(int, int, int, int, int);
void drawHeroDude2(int, int, int, int, int);
void drawMechaMonster(int, int, int);
void wzminus(float, float, float, float, float);
void wzplus(float, float, float, float, float);
void wxplus(float, float, float, float, float);
void wxminus(float, float, float, float, float);
void makeBooms(void);
void drawBuilding0(float *, int);
void drawBuilding6(int, float *, float *, int);
void drawBuilding8(float *,float *, int);
void drawBuilding11(int);
void drawBuilding15(float *, float *, int);
void drawBuilding22(float *);
void drawBuilding25(void);
void drawBuilding26(int, int);
void drawBuilding29(int,int);
void drawBuilding33(int, int);
void drawBuilding34(float *);
void drawBuilding36(float *);
void drawBuilding37(float *, int);
void drawTower(int, int);
void drawCoolingTower(int);
void drawHills(int,int);
void drawWater(int,int);
void drawBattlefield(struct road *, float, float, int, int,int);
void drawLake0(int);
void drawLake1(int);
void drawHill0(int);
void drawHill1(int, int);
void drawHill2(int, int);
void drawHill3(int, int);
void drawtrees(struct tree *, int, int, int, int,int);
void drawSlagTanks(struct tank *, int, int);
void drawTanks(struct tank *, int, struct monsterInfo, struct targetInfo *, int, int,int);
void drawMaser(float, float, float, int, float, float, float, float, float, float, float, int, int, int);
void drawHeroWeapon(float, float, float, float, float, float *, float, float);
void drawBooms(struct boom *, int);
void drawBeam(float, float, int, int, int, int);
void drawRoads(struct road *, float, float, int, int, int);
void drawProjectiles(struct projectile *, int, struct fireType*, int, int, int);
void andysphdraw(float loc[4], int);